using System;
using System.Linq;
using System.Linq.Expressions;
using Magiq.Update;

namespace Magiq
{
    public interface IMagiq<T> where T : class
    {
        IUpdate<T> Set<TReturn>(Expression<Func<T, TReturn>> property, TReturn value);
        IUpdate<T> Set<TReturn>(Expression<Func<T, TReturn>> property, Expression<Func<T, TReturn>> value);
        int Delete();
        int Delete(Expression<Func<T, bool>> where);
        int Insert<TNew>(IQueryable<TNew> source) where TNew : T;
    }
}